Test Failed
Push — develop ( 424bfb...c8c23d )
by Endre
02:45
created

Manager.getTranslator   A

Complexity

Conditions 2

Size

Total Lines 11
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 10
dl 0
loc 11
c 0
b 0
f 0
rs 9.9
cc 2
1
import ILoader from './ILoader';
2
import Translator from './Translator';
3
import TranslatorFactory from './Translator/Factory';
4
5
interface ITranslators {
6
  [languageCode: string]: Translator;
7
}
8
9
export default class Manager {
10
  protected loader: ILoader;
11
  protected translators: ITranslators;
12
  protected translatorFactory: TranslatorFactory;
13
14
  constructor(loader: ILoader, translatorFactory: TranslatorFactory) {
15
    this.loader = loader;
16
    this.translatorFactory = translatorFactory;
17
    this.translators = {}
18
  }
19
20
  public async getTranslator(languageCode: string) {
21
    if (this.translators.hasOwnProperty(languageCode)) {
22
      return this.translators[languageCode];
23
    }
24
25
    const languageData = await this.loader.loadLanguage(languageCode);
26
    const translator = this.translatorFactory.createTranslator(languageData);
27
    this.translators[languageCode] = translator;
28
29
    return translator;
30
  }
31
}